/**
 * API接口统一管理文件
 * 基于后端API接口文档
 */
import request from '@/utils/request'

// ==================== 用户模块 ====================
export const userAPI = {
  // 用户注册
  register(data) {
    return request({
      url: '/user/register',
      method: 'POST',
      data
    })
  },

  // 用户登录
  login(data) {
    return request({
      url: '/user/login',
      method: 'POST',
      data
    })
  },

  // 获取用户信息
  getUserInfo() {
    return request({
      url: '/user/userInfo',
      method: 'POST'
    })
  },

  // 更新用户信息
  updateUser(data) {
    return request({
      url: '/user/update',
      method: 'PUT',
      data
    })
  },

  // 修改密码
  updatePassword(oldPassword, newPassword) {
    return request({
      url: '/user/updatePassword',
      method: 'PUT',
      params: { oldPassword, newPassword }
    })
  },

  // 更新昵称
  updateNickname(nickName) {
    return request({
      url: '/user/updateNickname',
      method: 'PUT',
      params: { nickName }
    })
  },

  // 根据用户ID获取用户信息（用于前端显示）
  getUserInfoById(userId) {
    return request({
      url: `/user/info/${userId}`,
      method: 'GET'
    })
  }
}

// ==================== 管理端（系统管理） ====================
export const adminAPI = {
  // 获取当前管理员信息
  getAdminInfo() {
    return request({
      url: '/admin/auth/info',
      method: 'GET'
    })
  },

  // 查询操作日志
  getOperationLogs(params) {
    return request({
      url: '/admin/system/log/list',
      method: 'GET',
      params
    })
  }
}

// ==================== 商品模块 ====================
export const productAPI = {
  // 发布商品
  addProduct(data) {
    return request({
      url: '/product/add',
      method: 'POST',
      data
    })
  },

  // 查询商品列表
  getProductList() {
    return request({
      url: '/product/selectAll',
      method: 'GET'
    })
  },

  // 查询商品详情
  getProductDetail(id) {
    return request({
      url: `/product/detail/${id}`,
      method: 'GET'
    })
  },

  // 获取所有在售商品（推荐使用）
  getAvailableProducts() {
    return request({
      url: '/product/available',
      method: 'GET'
    })
  },

  // 更新商品信息
  updateProduct(data) {
    return request({
      url: '/product/update',
      method: 'PUT',
      data
    })
  },

  // 删除商品
  deleteProduct(id) {
    return request({
      url: `/product/delete/${id}`,
      method: 'DELETE'
    })
  },

  // 更新商品状态
  updateProductStatus(productId, status) {
    return request({
      url: `/product/status/${productId}`,
      method: 'PUT',
      params: { status }
    })
  },

  // 我的发布
  getMyProducts() {
    return request({
      url: '/product/myProducts',
      method: 'GET'
    })
  },

  // 搜索商品
  searchProducts(params) {
    return request({
      url: '/product/search',
      method: 'GET',
      params
    })
  },

  // 按新旧程度筛选
  filterByOldLevel(oldLevel) {
    return request({
      url: `/product/filterByOldLevel/${oldLevel}`,
      method: 'GET'
    })
  },

  // 上传商品图片
  uploadImages(files) {
    const formData = new FormData()
    Array.from(files).forEach(file => {
      formData.append('files', file)
    })
    return request({
      url: '/product/uploadImages',
      method: 'POST',
      data: formData,
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },

  // 发布商品（带文件上传）
  addProductWithFiles(data) {
    const formData = new FormData()
    
    // 添加商品信息
    formData.append('productName', data.productName)
    formData.append('productDetail', data.productDetail)
    formData.append('oldLevel', data.oldLevel)
    formData.append('price', data.price)
    
    // 添加图片文件
    if (data.files && data.files.length > 0) {
      Array.from(data.files).forEach(file => {
        formData.append('files', file)
      })
    }
    
    return request({
      url: '/product/addWithFiles',
      method: 'POST',
      data: formData,
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
  },

  // 删除商品图片
  deleteImage(imageUrl) {
    return request({
      url: '/product/deleteImage',
      method: 'DELETE',
      data: { imageUrl }
    })
  }
}

// ==================== 购物车模块 ====================
export const cartAPI = {
  // 添加购物车
  addCart(productId, quantity = 1) {
    return request({
      url: '/cart/add',
      method: 'POST',
      params: { productId, quantity }
    })
  },

  // 查询购物车
  getCartList() {
    return request({
      url: '/cart/list',
      method: 'GET'
    })
  },

  // 修改商品数量
  updateQuantity(cartId, quantity) {
    return request({
      url: '/cart/updateQuantity',
      method: 'POST',
      params: { cartId, quantity }
    })
  },

  // 删除商品
  deleteCart(cartId) {
    return request({
      url: '/cart/delete',
      method: 'POST',
      params: { cartId }
    })
  },

  // 切换选中状态
  toggleSelect(cartId, isSelected) {
    return request({
      url: '/cart/toggleSelect',
      method: 'POST',
      params: { cartId, isSelected: isSelected ? 1 : 0 }
    })
  },

  // 全选/取消全选
  selectAll(isSelected) {
    return request({
      url: '/cart/selectAll',
      method: 'POST',
      params: { isSelected: isSelected ? 1 : 0 }
    })
  },

  // 批量删除
  batchDelete(cartIds) {
    return request({
      url: '/cart/batchDelete',
      method: 'POST',
      data: cartIds
    })
  }
}

// ==================== 订单模块 ====================
export const orderAPI = {
  // 创建订单
  createOrder(data) {
    return request({
      url: '/order/create',
      method: 'POST',
      data
    })
  },

  // 查询我的购买订单
  getMyOrders() {
    return request({
      url: '/order/myOrders',
      method: 'GET'
    })
  },

  // 查询我的销售订单
  getMySales() {
    return request({
      url: '/order/mySales',
      method: 'GET'
    })
  },

  // 查询订单详情
  getOrderDetail(orderId) {
    return request({
      url: `/order/detail/${orderId}`,
      method: 'GET'
    })
  },

  // 根据订单号查询订单
  getOrderByCode(code) {
    return request({
      url: `/order/code/${code}`,
      method: 'GET'
    })
  },

  // 取消订单
  cancelOrder(orderId) {
    return request({
      url: `/order/cancel/${orderId}`,
      method: 'PUT'
    })
  },

  // 支付订单
  payOrder(orderId) {
    return request({
      url: `/order/pay/${orderId}`,
      method: 'PUT'
    })
  },

  // 发货（新接口）
  shipOrder(orderId) {
    return request({
      url: `/order/ship-new/${orderId}`,
      method: 'PUT'
    })
  },

  // 确认收货（新接口）
  confirmOrder(orderId) {
    return request({
      url: `/order/confirm-new/${orderId}`,
      method: 'PUT'
    })
  },

  // 更新订单状态
  updateOrderStatus(orderId, status) {
    return request({
      url: `/order/status/${orderId}`,
      method: 'PUT',
      params: { status }
    })
  },

  // 根据状态查询订单
  getOrdersByStatus(status) {
    return request({
      url: `/order/status/${status}`,
      method: 'GET'
    })
  },

  // 更新订单信息
  updateOrder(data) {
    return request({
      url: '/order/update',
      method: 'PUT',
      data
    })
  },

  // 删除订单（管理员）
  deleteOrder(orderId) {
    return request({
      url: `/order/delete/${orderId}`,
      method: 'DELETE'
    })
  }
}

// ==================== 收藏模块 ====================
export const favoriteAPI = {
  // 添加收藏
  addFavorite(productId) {
    return request({
      url: '/favorite/add',
      method: 'POST',
      params: { productId }
    })
  },

  // 取消收藏
  removeFavorite(productId) {
    return request({
      url: '/favorite/remove',
      method: 'DELETE',
      params: { productId }
    })
  },

  // 查询我的收藏
  getMyFavorites() {
    return request({
      url: '/favorite/myFavorites',
      method: 'GET'
    })
  },

  // 检查是否收藏
  checkFavorite(productId) {
    return request({
      url: `/favorite/check/${productId}`,
      method: 'GET'
    })
  },

  // 查询收藏数量
  getFavoriteCount(productId) {
    return request({
      url: `/favorite/count/${productId}`,
      method: 'GET'
    })
  }
}

// ==================== 鱼类信息模块 ====================
export const fishAPI = {
  // 查询所有鱼类
  getFishList() {
    return request({
      url: '/fish/list',
      method: 'GET'
    })
  },

  // 查询鱼类详情
  getFishDetail(id) {
    return request({
      url: `/fish/detail/${id}`,
      method: 'GET'
    })
  },

  // 搜索鱼类
  searchFish(keyword) {
    return request({
      url: '/fish/search',
      method: 'GET',
      params: { keyword }
    })
  },

  // 按栖息地筛选
  filterByHabitat(habitat) {
    return request({
      url: '/fish/filterByHabitat',
      method: 'GET',
      params: { habitat }
    })
  },

  // 按分布区域筛选
  filterByDistribution(distribution) {
    return request({
      url: '/fish/filterByDistribution',
      method: 'GET',
      params: { distribution }
    })
  }
}

// ==================== 社区模块 ====================
export const postAPI = {
  // 发布帖子
  createPost(data) {
    return request({
      url: '/post/create',
      method: 'POST',
      data
    })
  },

  // 更新帖子
  updatePost(data) {
    return request({
      url: '/post/update',
      method: 'PUT',
      data
    })
  },

  // 删除帖子
  deletePost(postId) {
    return request({
      url: `/post/delete/${postId}`,
      method: 'DELETE'
    })
  },

  // 获取帖子详情
  getPostDetail(postId) {
    return request({
      url: `/post/detail/${postId}`,
      method: 'GET'
    })
  },

  // 获取帖子列表
  getPostList(params) {
    return request({
      url: '/post/list',
      method: 'GET',
      params
    })
  },

  // 根据分类获取帖子
  getPostsByCategory(category, params) {
    return request({
      url: `/post/category/${category}`,
      method: 'GET',
      params
    })
  },

  // 根据用户获取帖子
  getPostsByUser(userId, params) {
    return request({
      url: `/post/user/${userId}`,
      method: 'GET',
      params
    })
  },

  // 搜索帖子
  searchPosts(params) {
    return request({
      url: '/post/search',
      method: 'GET',
      params
    })
  },

  // 获取热门帖子
  getHotPosts(limit = 10) {
    return request({
      url: '/post/hot',
      method: 'GET',
      params: { limit }
    })
  },

  // 点赞/取消点赞帖子
  likePost(postId) {
    return request({
      url: `/post/like/${postId}`,
      method: 'POST'
    })
  },

  // 增加浏览次数
  viewPost(postId) {
    return request({
      url: `/post/view/${postId}`,
      method: 'POST'
    })
  }
}

export const commentAPI = {
  // 发表评论
  createComment(data) {
    return request({
      url: '/comment/create',
      method: 'POST',
      data
    })
  },

  // 添加评论（别名方法）
  addComment(postId, data) {
    return request({
      url: '/comment/create',
      method: 'POST',
      data: {
        postId,
        ...data
      }
    })
  },

  // 更新评论
  updateComment(data) {
    return request({
      url: '/comment/update',
      method: 'PUT',
      data
    })
  },

  // 删除评论
  deleteComment(commentId) {
    return request({
      url: `/comment/delete/${commentId}`,
      method: 'DELETE'
    })
  },

  // 获取评论详情
  getCommentDetail(commentId) {
    return request({
      url: `/comment/detail/${commentId}`,
      method: 'GET'
    })
  },

  // 根据帖子获取评论列表
  getCommentsByPost(postId, params) {
    return request({
      url: `/comment/post/${postId}`,
      method: 'GET',
      params
    })
  },

  // 根据用户获取评论列表
  getCommentsByUser(userId, params) {
    return request({
      url: `/comment/user/${userId}`,
      method: 'GET',
      params
    })
  },

  // 点赞/取消点赞评论
  likeComment(commentId) {
    return request({
      url: `/comment/like/${commentId}`,
      method: 'POST'
    })
  }
}

// 默认导出所有API
export default {
  userAPI,
  adminAPI,
  productAPI,
  cartAPI,
  orderAPI,
  favoriteAPI,
  fishAPI,
  postAPI,
  commentAPI
}

